<?php namespace system\model;
use houdunwang\model\Model;
class Category extends Model{
	//数据表
	protected $table = "category";
	//允许填充字段
	protected $allowFill = [ '*'];

	//自动验证
	protected $validate=[
    //		['字段名','验证方法','提示信息',验证条件,验证时间]
            ['cname','isnull','分类名称不能为空',3,3],
            ['ctitle','isnull','分类标题不能为空',self::MUST_VALIDATE,self::MODEL_BOTH],
            ['cdesc','isnull','分类描述不能为空',self::MUST_VALIDATE,self::MODEL_BOTH],
            ['ckeywords','isnull','分类关键词不能为空',self::MUST_VALIDATE,self::MODEL_BOTH],
            ['csort','isnull','分类排序不能为空',self::MUST_VALIDATE,self::MODEL_BOTH]
	];

    /**
     * 数据入库
     * @return bool
     */
    public function store(){
        //自动验证之后入库操作，注意，仅该方法会调用validata自动验证，并且要设置protected $allowFill=[*]
        return $this->save($_POST);
    }

    /**
     *  获取筛选后的分类数据
     * @param $cid 当前分类id
     */
    public function getCateDate($cid){

         //1.获取当前子集数据
           $data=Db::table('category')->get();
           $cids=$this->getSon($data,$cid);
        //2.把自己追加进去
           $cids[]= $cid;
        //3.找到除了自己和子集之外的所有数据
          $data=$this->whereNotIn('cid',$cids)->get()->toArray();
          return Arr::tree($data,'cname');
    }
    public function getSon($data,$cid){
         $temp=[];
         foreach ($data as $k=>$v){
             if($v['pid']==$cid){
                 $temp[]=$v['cid'];
                 $this->getSon($data,$v['cid']);
             }
         }
         return $temp;
    }

    /**
     * 删除方法
     * @param $data 查询所有数据
     * @param $cid 待删除分类的id
     */
    public function del($cid,$data){
         $res=$this->checkSon($cid,$data);
         if($res){
             //执行删除
             $this->delete($cid);
             return true;
         }
         return false;
    }

    /**检查子节点是否存在
     * @param $cid 当前分类的cid
     * @param $data 所有数据
     */

    public function checkSon($cid,$data){
        foreach($data as $k=>$v){
            if($cid==$v['pid']){
                return false;
            }
        }
        return true;
    }

    /**
     * 编辑
     */
    public function edit(){

        //        方式二:
                $data=$this->find($_POST['cid']);
                $data->cname=$_POST['cname'];
                $data->pid=$_POST['pid'];
                $data->cdesc=$_POST['cdesc'];
                $data->ckeywords=$_POST['ckeywords'];
                $data->ctitle=$_POST['ctitle'];
                $data->csort=$_POST['csort'];
        return $data->save();

    }

}